package com.itheima.wisdomnext.controller;

import com.itheima.wisdomnext.entity.Category;
import com.itheima.wisdomnext.entity.Post;
import com.itheima.wisdomnext.entity.Result.ResponseResult;
import com.itheima.wisdomnext.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@CrossOrigin // 允许跨域访问
@RestController
@RequestMapping("/api/categorie") // 接口基础路径
public class CategoryController {

    @Autowired
    private CategoryService categoryService;

    /**
     * 获取所有分类信息
     * @return 所有分类的列表
     */
    @GetMapping("/show")
    public ResponseResult<List<Category>> getAllCategories() {
        List<Category> categories = categoryService.getAllCategories();
        return ResponseResult.success("查询成功", categories);
    }

    /**
     * 根据分类名称查询分类对象
     * @param name 分类名称
     * @return 分类对象
     */
    @GetMapping("/select/{name}")
    public ResponseResult<Category> getCategoryByName(@PathVariable String name) {
        Category category = categoryService.getCategoryByName(name);
        return ResponseResult.success("查询成功", category);
    }

    /**
     * 获取指定分类下的所有帖子
     * @param categoryName 分类名称
     * @return 帖子列表
     */
    @GetMapping("/posts/{categoryName}")
    public ResponseResult<List<Post>> getPostsByCategory(@PathVariable String categoryName) {
        List<Post> posts = categoryService.getPostsByCategory(categoryName);
        return ResponseResult.success("查询成功", posts);
    }

    /**
     * 添加一个新分类
     * @param name 新分类名称
     * @return 操作结果
     */
    @PostMapping("/add/{name}")
    public ResponseResult<Object> addCategory(@PathVariable String name) {
        categoryService.addCategory(name);
        return ResponseResult.success("分类添加成功", null);
    }

    /**
     * 删除指定 ID 的分类
     * @param id 分类主键 ID
     * @return 操作结果
     */
    @DeleteMapping("/delete/{id}")
    public ResponseResult<Object> deleteCategory(@PathVariable int id) throws Exception{
        categoryService.deleteCategory(id);
        return ResponseResult.success("分类删除成功", null);
    }

    /**
     * 更新分类信息
     * @param category 分类对象（必须包含 id）
     * @return 操作结果
     */
    @PutMapping("/update")
    public ResponseResult<Object> updateCategory(@RequestBody Category category) {
        categoryService.updateCategory(category);
        return ResponseResult.success("分类更新成功", null);
    }

}
